package com.itpan.Mapper;

import com.itpan.Entity.Dto.EmployeeProcedure;
import com.itpan.Entity.Employee;
import com.itpan.Entity.StatsByT;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import java.util.List;
import java.util.Map;
import java.util.Objects;

@Mapper
public interface EmployeeMapper {


    List<Employee> getAllEmployees();

    List<Employee> getAllEmployeesPage(RowBounds rowBounds);


    Employee getEmployeeById(@Param(value = "id") String id);

    void insertOne(Employee employee);

    void insertAll(@Param(value = "employeeList") List<Employee> employeeList);

    void update(Employee employee);

    void deleteById(@Param(value = "id") String id);

    Employee findByName(@Param(value = "employeeName") String employeeName);


    List<Employee> getbymutil(Employee employee);

    Employee getbyemail(@Param("employeeEmail") String employeeEmail);

    List<StatsByT> gettopsalary();

    List<StatsByT> getlevelofEmployee();

    @MapKey("employeeID")
    List<EmployeeProcedure> getHighestSalaryEmployeeByLevel(@Param("employeeLevel") Integer employeeLevel);
}
